package cs3220;

public enum OpCode {
	AND("00"), ANDI("01"), NAND("02"), NANDI("03"), OR("04"), ORI("05"), NOR("06"), NORI("07"), XOR("08"), XORI("09"),
	EQ("10"), EQI("11"), NE("12"), NEI("13"), LT("14"), LTI("15"), LE("16"), LEI("17"),
	ADD("20"), ADDI("21"), SUB("22"), SUBI("23"),
	
	LW("40"),
	RCTL("50"),
	SW("60"),
	WCTL("70"),
	JRL("80"),RETI("80"),
	BEQ("90"), BEQZ("91"), BNE("92"), BNEZ("93"),
	NOOP("FF"), NOP("00");
	
	private String code;
	
	private OpCode(String code) {
		this.code = code;
	}
	
	public String getHex() {
		return code;
	}
	
	public static OpCode getOp(String op) {
		for(OpCode o : OpCode.values()) {
			if (o.toString().toUpperCase().equals(op))
				return o;
		}
		return OpCode.NOOP;
	}
	
}
